Crate enum_display_derive[−][src]
derive Display
for simple enums
You can derive the Display
trait for simple enums.
Actually, the most complex enum definition that this crate supports is like this one:
ⓘ
#[derive(Display)] pub enum FooBar { Foo, Bar(), FooBar(i32), // some wrapped type which implements Display }
The above code will be expanded (roughly, without the enum definition) into this code:
ⓘ
impl Display for FooBar { fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::result::Result<(), ::std::fmt::Error> { match *self { FooBar::Foo => f.write_str("Foo"), FooBar::Bar => f.write_str("Bar()"), FooBar::FooBar(ref inner) => ::std::fmt::Display::fmt(inner, f), } } }
Examples
ⓘ
#[macro_use] extern crate enum_display_derive; use std::fmt::Display; #[derive(Display)] enum FizzBuzz { Fizz, Buzz, FizzBuzz, Number(u64), } fn fb(i: u64) { match (i % 3, i % 5) { (0, 0) => FizzBuzz::FizzBuzz, (0, _) => FizzBuzz::Fizz, (_, 0) => FizzBuzz::Buzz, (_, _) => FizzBuzz::Number(i), } } fn main() { for i in 0..100 { println!("{}", fb(i)); } }